package com.dhu.wx.handler;

/**
 * @Author gongjiawei
 * @Date 2025/3/5 11:44
 * @注释
 */
public enum WxChatMsgTypeEnum {
    // 用户关注事件
    SUBSCRIBE("event.subscribe", "用户关注事件"),
    // 接收文本消息
    TEXT_MSG("text", "接收消息");

    private final String msgType;
    private final String desc;

    // 枚举构造器，私有且只能在此类中调用
    WxChatMsgTypeEnum(String msgType, String desc) {
        this.msgType = msgType;
        this.desc = desc;
    }

    /**
     * 根据消息类型获取对应的枚举实例
     * @param msgType 消息类型字符串
     * @return 对应的枚举实例，未找到则返回null
     */
    public static WxChatMsgTypeEnum getByMsgType(String msgType) {
        for (WxChatMsgTypeEnum type : WxChatMsgTypeEnum.values()) {
            if (type.msgType.equals(msgType)) {
                return type;
            }
        }
        return null;
    }

    /**
     * 获取消息类型对应的代码
     * @return 消息类型代码
     */
    public String getMsgType() {
        return this.msgType;
    }

    /**
     * 获取消息描述
     * @return 消息类型的中文描述
     */
    public String getDesc() {
        return this.desc;
    }

    @Override
    public String toString() {
        return "[" + this.name() + "] msgType:" + msgType + ", desc:" + desc;
    }

}
